package modelo;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;

public class CompraDao 
{
	public boolean registrarCompra(Compras compra) throws Exception
	{
		ArrayList<String> tirasSQL= new ArrayList<String>();
		
		tirasSQL.add("insert into \"COMPRAS\" (cod_compra,cod_proveedor,fecha,porc_impuesto,total_pagar,status) " +
				"values (" + compra.getNroCompra() + ",'" + compra.getProveedor().getCodProveedor() + "','" +
				 compra.getFechaFormateada() + "'," + compra.getPorcImpuesto() + "," + compra.getTotalPagar()  + ",'A')");
		
        Iterator<CompraDetalle> iterador= compra.getIterador();   
		CompraDetalle compraDetalle=null;
		double costo= 0.0;
		IngredienteDao ingredienteDao= new IngredienteDao();
		
        while (iterador.hasNext())
        {
           compraDetalle= iterador.next();
           
           tirasSQL.add("insert into \"COMPRAS_DETALLES\" (cod_compra,cod_ingrediente,precio_unitario,cantidad,status) values " + 
        		        "(" + compra.getNroCompra()  + ",'" + compraDetalle.getIngrediente().getCodigo() + "'," +
        		         compraDetalle.getIngrediente().getCosto() + "," + compraDetalle.getCantidad() + ",'A')");
           
           //Para que se actualice el costo del Ingrediente siempre toma el costo mayor
           costo= ingredienteDao.getCostoUnitarioIngrediente(compraDetalle.getIngrediente());
           if (costo <  (compraDetalle.getIngrediente().getCosto() +  (compraDetalle.getIngrediente().getCosto() * compra.getPorcImpuesto())/100))
        	   costo= compraDetalle.getIngrediente().getCosto() +  ((compraDetalle.getIngrediente().getCosto() * compra.getPorcImpuesto())/100);
            
           tirasSQL.add("update \"INGREDIENTES\" set existencia= (existencia +" +  compraDetalle.getCantidad() + 
        			        "),costo=" + costo + " where cod_ingrediente='" + compraDetalle.getIngrediente().getCodigo()  + "'");
        
        }  
        
		boolean ejecutado=Conexion.ejecutarDMLTransaccion(tirasSQL);
		
		return ejecutado;
	}
	
	public long getNroCompras() throws Exception
	{
		long nroVentas=0;
		
		String tiraSQL= "select count(*) as \"nro_compras\" from \"COMPRAS\" ";
		ResultSet rs= Conexion.ejecutarDQL(tiraSQL);
		
		if (rs.next())
		  nroVentas= rs.getInt("nro_compras");
		
		return nroVentas;
	}

}
